#include <bits/stdc++.h>
using namespace std;

#define ONLINE_JUDGE

// #define P _fuckP
#define minus _myMinus

#ifndef ONLINE_JUDGE
#define dbg(x...) { cerr << "\033[32;1m" << #x << " -> "; err(x); }
void err() { cerr << "\033[39;0m" << endl; }
template<typename T, typename... A>
void err(T a, A... x) { cerr << a << ' '; err(x...); }
#else
#define dbg(...)
#endif

typedef long long LL;

const int N = 1e6+50;


typedef pair<LL, LL> P;

// P a[N];

LL s[N];
int a[N];
int n;
P p[N];

LL cp(P a, P b)
{
	return a.first * b.second - a.second * b.first;
}

P minus (const P &a, const P &b)
{
	return P(a.first - b.first, a.second - b.second);
}


int main(int argc, char const *argv[])
{
	scanf("%d", &n);
	for (int i=1; i<=n; ++i)
		scanf("%d", &a[i]);
	for (int i=1; i<=n; ++i)
		s[i] = s[i-1] + a[i];
	for (int i=1; i<=n; ++i)
		p[i] = P(i, s[i]);

	// stack<P> S;
	static P S[N];
	static int top = 0;
	S[top++] = p[0];
	for (int i=1; i<=n; ++i)
	{
		dbg(i, p[i].first, p[i].second);
		while (top >= 2)
		{
			P p1 = S[top-2], p2 = S[top-1], p3 = p[i];
			P x = minus(p2, p1), y = minus(p3, p1);
			if (cp(x, y) <= 0)
				--top;
			else
				break;
		}
		S[top++] = p[i];
		dbg(top);
	}

	for (int i=0; i<top-1; ++i)
	{
		int l = S[i].first, r = S[i+1].first;
		double x = ((double)s[r] - s[l]) / (r-l);
		for (int j=0; j<r-l; ++j)
			printf("%.10lf\n", x);
	}

	return 0;
}